package com.cqemme.activitiservice.service;

import com.cqemme.activitiservice.po.CloseTaskPo;
import com.cqemme.activitiservice.po.CompleteTaskPo;
import com.cqemme.comm.po.CurrentLoginUser;
import com.cqemme.comm.po.Result;

import java.util.Map;

/**
 * @author nejery
 */
public interface AlarmService {

    /**
     * 校徽产生报警
      * @return
     */
    Result sosAlarm(String data);

    /**
     * 处理报警消息
     * @param msg 报警字符串
     */
    void handleAlarm(String msg);


    /**
     * (保安等组织)人员查询自己的已办任务
     *
     * @return  结果
     */
    public Map<String, Object> doneTaskList(CurrentLoginUser currentLoginUser, Integer pageNum, Integer size);

    /**
     * 保安等组织人员查询自己的代理任务
     *
     * @param currentLoginUser 当前登录用户
     * @return 结果
     */
    public Map<String, Object> assignTask(CurrentLoginUser currentLoginUser, Integer pageNum, Integer size);




    /**
     * 保安等组织人员查询自己的候选任务
     *
     * @param currentLoginUser 当前登录用户
     * @return 结果
     */
    public Map<String, Object> candidateTask(CurrentLoginUser currentLoginUser, Integer pageNum, Integer size);


    /**
     * 其中有一个保安到达报警地点
     *
     * @param json
     * @return
     */
     void securityArrival(String json) ;

    /**
     * 候选人签收任务
     * @param taskId taskId
     * @param currentLoginUser 任务完成着
     */
    void claimTask(String taskId, CurrentLoginUser currentLoginUser);

    /**
     * 完成任务
     * @param currentLoginUser 操作用户
     * @param completeTaskPo 完成对象Po
     * @return 操作结果
     */
    Result completeTask(CurrentLoginUser currentLoginUser, CompleteTaskPo completeTaskPo);

    /**
     * 关闭报警
     * @param currentLoginUser 操作用户
     * @param closeTaskPo 关闭对象
     * @return 操作结果
     */
    Result closeTask(CurrentLoginUser currentLoginUser, CloseTaskPo closeTaskPo);


    /**
     * 查询任务数量
     * @return 查询数量
     */
    Map<String, Object> selectTaskCount(CurrentLoginUser currentLoginUser);
}
